package com.fansl.allround.common.core.constant.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author fansl
 * @Description: 定时任务失败策略
 * @date 2020/1/21 14:30
 */
@Getter
@AllArgsConstructor
public enum  ScheduleMisfirePolicyEnum {
    MISFIRE_DEFAULT(0,"默认"),
    /**
     * 不触发立即执行
     * 等待下次Cron触发频率到达时刻开始按照Cron频率依次执行
     */
    MISFIRE_DO_NOTHING(1,"不触发立即执行"),
    /**
     * 以错过的第一个频率时间立刻开始执行
     * 重做错过的所有频率周期后
     * 当下一次触发频率发生时间大于当前时间后，再按照正常的Cron频率依次执行
     */
    MISFIRE_IGNORE_MISFIRES(2,"以错过的第一个频率时间立刻开始执行"),
    /**
     * 以当前时间为触发频率立刻触发一次执行
     * 然后按照Cron频率依次执行
     */
    MISFIRE_FIRE_AND_PROCEED(3,"以当前时间为触发频率立刻触发一次执行");

    private final int code;

    private final String message;

    public static ScheduleMisfirePolicyEnum getByCode(int code){
        for (ScheduleMisfirePolicyEnum misfirePolicyEnum:ScheduleMisfirePolicyEnum.values()){
            if(misfirePolicyEnum.getCode()==code){
                return misfirePolicyEnum;
            }
        }
        return MISFIRE_DEFAULT;
    }
}
